using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SmartLink.Domain;
using SmartLink.Domain.Entity;
using SmartLink.Domain.ExpandEntity.Base;
using SmartLink.EnumLibrary;
using SmartLink.Domain.ExpandEntity;

namespace SmartLink.IRepository
{
    public interface ISYS_UserRepo : IRepository<SYS_User>
    {
        /// <summary>
        /// 账户名是否已存在
        /// </summary>
        bool ExistAccountName(string accountName);
        /// <summary>
        /// 邮箱是否已存在
        /// </summary>
        bool ExistUserEmail(string userEmail);

        SYS_User GetUserByAccount(string account);
        // List<SYS_Menu> GetMenusByIds(List<int> menuIds);
        int GetUserIdByName(string username);
        /// <summary>
        /// 获取用户身份凭证
        /// </summary>
        dynamic GetUserCertificate(int userId);
        /// <summary>
        /// 获取用户分页列表
        /// </summary>
        IEnumerable<dynamic> GetPaged(int? oid, int? odid, UserStatusEnum? userStatus, string keyValue, int curUserId, Pagination pagination, bool isSuperManager = false, bool isorgManager = false);
        void DeleteUserByOrgId(int orgId);
        IList<dynamic> GetUserList(string odidStr);
        dynamic GetUserInfo(int id);
        void Delete(int id);
        IEnumerable<UserSelectItemExpand> GetUserSelectList(int orgId, bool isDept);
        SYS_User GetUserByOpenID(string openId);
    }

}
